MySQL导入csv的一些问题

您所在的位置:网站首页 mysql 导入csv数据 MySQL导入csv的一些问题

MySQL导入csv的一些问题

2023-11-05 12:55| 来源: 网络整理| 查看: 265

MySQL导入csv的一些问题

1.建库并使用库 create database test; use test; 2.建表并导入外部数据 create table table1( 'column1' varchar(100), 'column2' varchar(100), 'column3' TEXT ); load data infile "C:/Users/123/Desktop/test.csv" into table table1 fields terminated by ',' lines terminated by '\r\n' ignore 1 lines;

建表时,将字段统一设置为“varchar(100)”,目前还没有遇到问题,不论csv文件中的数据属于整数、浮点、日期还是字符。如果字符长度可能超出varchar的规定,可以使用TEXT。

字段间使用英文逗号间隔,最后一个字段后不跟逗号。

load data infile时要将原始文件放置于安全路径下。若想放置于任意路径下,可对安全路径进行修改或者删除安全路径,具体方法见MySQL安装步骤(版本8.0.23)中章节3部分。可通过下述语句查询安全路径:

show variables like '%secure%'; 3.解决“ERROR 1262”

1262错误的完全语句如下:

ERROR 1262 (***): Row *** was truncated; it contained more data than there were input columns

产生原因是之前导入csv数据的时候,csv通过“,”分割数据,如果某单元格内有大量文本,而其中又包含有“,”,此时就会触发条件报错。所以一种解决办法就是去csv文件中,将“,”替换为空。

如果存在自动化导入需求,或者csv本身已经十分臃肿操作卡顿,可以修改sql_mode忽略此报错。此时虽然没有报错了,但系统仍会发出警告。同时需要指出,这种方法有可能会发生紊乱,不建议使用。

show variables like '%sql_mode%'; select @@sql_mode; set session sql_mode='ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

第二条语句执行后会得到sql_mode的结果,发现其中有一个“STRICT_TRANS_TABLES”,问题就出在它身上。在第三条语句设置sql_mode时,将STRICT_TRANS_TABLES去掉即可。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3